package edu.tfh.s2.ehkbot.steuerung.fehlersteuerung;

import java.util.Vector;

/**
 * Ein FehlerErkennerProfiel ist ein Sammlung von FehlerErkenner. Es läuft als nebenläufter Thread.
 */
public class FehlerErkennerProfiel extends Thread {
	private int abtastZeit;
	private boolean beenden = false;
	private Vector<FehlerErkenner> fehlerErkenner = new Vector<FehlerErkenner>();

	/**
	 * Konstruktor für FehlerErkennerProfiel.
	 * 
	 * @param abtastZeit Die Abtastzeit mit der die Sensoren abgefragt werden.
	 */
	public FehlerErkennerProfiel(int abtastZeit) {
		super();
		this.abtastZeit = abtastZeit;
	}

	/**
	 * Fügt einen FehlerErkenner zum Profiel hinzu.
	 * 
	 * @param fehlererkenner
	 *            Der Fehler erkenner.
	 */
	public void add(FehlerErkenner fehlererkenner) {
		fehlerErkenner.add(fehlererkenner);
	}

	/**
	 * Beendet ein FehlerErkennungsProfiel.
	 */
	public void beende() {
		beenden = true;
	}

	/**
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object rhs) {
		if (this == rhs)
			return true;
		if (!(rhs instanceof FehlerErkenner))
			return false;
		return false;
	}

	/**
	 * @see java.lang.Thread#run()
	 */
	@Override
	public void run() {
		while (!beenden) {
			for (FehlerErkenner erkenner : fehlerErkenner) {
				erkenner.pruefe();
			}
			try {
				Thread.sleep(abtastZeit);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}